package 数组;

import java.util.Arrays;
import java.util.Comparator;

/**
 * @PackageName: 数组
 * @ClassName: LeetCode1637
 * @Author: chen jinxu
 * @Date: 2023/3/30 20:55
 * @Description: //两点之间不包含任何点的最宽垂直区域
 * <p>
 * 给你n个二维平面上的点 points ，其中points[i] = [xi, yi]，
 * 请你返回两点之间内部不包含任何点的最宽垂直区域 的宽度。
 * 垂直区域 的定义是固定宽度，而 y 轴上无限延伸的一块区域（也就是高度为无穷大）。 最宽垂直区域 为宽度最大的一个垂直区域。
 * 请注意，垂直区域边上的点不在区域内。
 * 输入：points = [[8,7],[9,9],[7,4],[9,7]]
 * 输出：1
 * 解释：红色区域和蓝色区域都是最优区域。
 * 输入：points = [[3,1],[9,0],[1,0],[1,4],[5,3],[8,8]]
 * 输出：3
 */
public class LeetCode1637 {
    public static void main(String[] args) {
        System.out.println(maxWidthOfVerticalArea(new int[][]{{8, 7}, {9, 9}, {7, 4}, {9, 7}}));
        System.out.println(maxWidthOfVerticalArea(new int[][]{{3, 1}, {9, 0}, {1, 0}, {1, 4}, {5, 3}, {8, 8}}));
    }

    public static int maxWidthOfVerticalArea(int[][] points) {
        Arrays.sort(points, Comparator.comparingInt(a -> a[0]));
        int max = 0;
        for (int i = 1; i < points.length; i++) {
            max = Math.max(max, points[i][0] - points[i - 1][0]);
        }
        return max;
    }

}
